﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework;
using System.Xml;
using PloobsEngine.Modelo;
using PloobsEngine.SceneControl;

namespace PloobsEngine.Physics
{
    public interface IPhysicObject
    {
        Vector3 Position { set; get; }
        Vector3 Scale { set;  get; }
        Matrix Rotation { set; get; }
        Vector3 FaceVector { get; }
        Matrix WorldMatrix {get; }
        Vector3 Velocity { set; get; }
        void Serialize(System.Xml.XmlTextWriter textWriter);
        void DeSerialize(XmlNode node, EngineStuff engine, IModelo model, Vector3 position, Matrix rotation);
        bool isMotionLess { set; get; }
        IObject ObjectOwner { set; get; }
        PhysicObjectTypes PhysicObjectTypes { get; }
        void Enable();
        void Disable();
        //void ApplyForce(Vector3 force);
        void ApplyImpulse(Vector3 force);
        void ApplyTorque(Vector3 force);
        BoundingBox BoundingBox
        {
            get;
        }

    }
    
    public enum PhysicObjectTypes 
    {
        TERRAIN,DETECTOROBJECT,COMPOUNDOBJECT,CYLINDEROBJECT,BOXOBJECT, CAROBJECT, CAPSULEOBJECT, CHARACTEROBJECT, PLANEOBJECT, SPHEREOBJECT, TRIANGLEMESHOBJECT, HEIGHMAPOBJECT, GHOST, SPECIALIZEDMOVER,OTHER, NONE
    }
    
}
